Systems and methods for selecting a communication channel

ABSTRACT

A method and system of transmitting data. The method comprises receiving data, in a memory of the server computing device, from an asset tracker device; determining, in a processor of the server computing device, one or more weighting factors representing a respective priority associated with one or more of a latency, a cost, a power utilization and a throughput associated with transmission of the data for each of a plurality of communication channels; and selecting, from the plurality of communication channels, a communication channel for transmission of the data based at least in part on the one or more weighting factors and a transmission schedule for the data.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of priority to U.S. ProvisionalPatent Application No. 62/947,539 filed Dec. 12, 2019. Said U.S.Provisional Patent Application No. 62/947,539 is incorporated byreference in the entirety herein.

BACKGROUND Field of the Art

This disclosure relates generally to communications and morespecifically to selecting an appropriate communication channel.

Discussion of the State of the Art

Internet of Things (IoT) devices may be used to gather data about anenvironment and provide feedback to a user remotely. Often, IoT devicesneed to be “always connected,” providing constant data from one or moreassociated sensors to a cloud computing environment using a particularcommunication channel. The remote user may retrieve data provided fromthe IoT devices from the cloud computing environment. However, networkconditions may make the particular communication channel less desirablethan another communication channel. What is needed is a way todynamically compare communication channels and select a particularcommunication channel for a particular message.

SUMMARY

The present invention utilizes systems and/or methods for selecting acommunication channel. The systems and/or methods described herein, inaccordance with an embodiment of the invention, automatically cause amessage to be transmitted via a selected communication channel. Thesystems and/or methods described herein may receive a communicationrequest. The systems and/or methods may perform a preliminary analysisof the communication request. The systems and/or methods may retrieveone or more factors (e.g., costs, latency, throughput, power usage,etc.), and, based on the preliminary analysis, the systems and/ormethods may apply particular weights to the one or more retrievedfactors to create an algorithm. The systems and/or methods may use thealgorithm to select a communication path. The systems and/or methods mayselect a radio and/or modulation/demodulation profile associated withthe selected communication path.

For example, an Internet of Things (IoT) device may be placed in a fieldof crops. The IoT device may comprise one or more sensors for detectingdata relevant for crops (e.g., temperature, humidity, etc.) The IoTdevice may transmit a request to make detected data available to aremote user to a communication system, such as a server or a satellitein direct communication with the IoT device. The communication systemmay receive the request and perform preliminary analysis on the request.The preliminary analysis may determine that the request is not urgent.

The communication system may be configured to communicate via a firstcommunication channel. The first communication channel may comprise acellular channel. In one embodiment, the communication system maycomprise a cellular radio. In one embodiment, the communication systemmay comprise a software-defined radio (SDR) comprising a cellularsetting. In one embodiment, the cellular setting may comprise of an SDRpersonality that is compiled in a bitfile on the SDR's FPGA. However,the cellular setting may be compiled in other ways, as would be readilyapparent to a person of ordinary skill in the art. The communicationsystem may be configured to communicate via a second communicationchannel. The second communication channel may comprise satellitechannel. In one embodiment, the communication system may comprise asatellite radio. In one embodiment, the communication system maycomprise an SDR comprising a satellite setting.

The communication system may retrieve real-time and/or near real-timevalues associated with cost, latency, throughput, and power consumptionfor at least two communication channels from one or more lookup tables.Because the communication system determined that the request is noturgent, the communication system may assign coefficients with lowerpriorities to values associated with speed at which the request isdelivered (e.g., latency, throughput, etc.) and coefficients with higherpriorities to other values (e.g., cost, power consumption, etc.). Thecommunication system may select the cellular channel based on the valuesfrom the one or more lookup tables and the preliminary analysis of therequest. The communication system may cause a cellular radio to beturned on. The communication system may prepare the data in a messagereceivable by the cellular channel. The communication system may causethe prepared message to be transmitted from the cellular radio to aserver accessible by a remote user via the cellular channel.

One benefit of the present invention is that data received from IoTdevices may be sent cost efficiently when appropriate, and timeefficiently when needed. This reduces the cost it takes to transmit datawhen situations permit the data to be sent without urgency. This alsoreduces the time it takes to transmit data when urgency is needed.

Provided is a method, performed in a server computing device, oftransmitting data. The method comprises receiving data, in a memory ofthe server computing device, from an asset tracker device; determining,in a processor of the server computing device, one or more weightingfactors representing a respective priority associated with one or moreof a latency, a cost, a power utilization and a throughput associatedwith transmission of the data for each of a plurality of communicationchannels; and selecting, from the plurality of communication channels, acommunication channel for transmission of the data based at least inpart on the one or more weighting factors and a transmission schedulefor the data.

In one embodiment, the method further comprises switching on theselected communication channel and transmitting the data, in accordancewith the selected communication channel, to at least one of: the assettracker, an intermediary computing device associated with the assettracker, and a communication satellite.

In one aspect, switching on the selected communication channel comprisestransitioning a software-defined radio (SDR) associated with theselected communication channel from a first configuration into a secondconfiguration.

In another aspect, the method further comprises, prior to transmittingthe data, performing an in-phase and quadrature phase (IQ) modulationoperation in conjunction with IQ modulation digital to analog convertersin association with the selected communication channel.

In one embodiment, the data transmission schedule is based at least inpart on one or more of latency and data throughput information of eachof the plurality of communication channels.

In one variation, the weighting factor associated with the latency isbased at least in part upon a transmission distance associated with alocation along an expected path of the asset tracker and an expectedtime of delivery of the data transmission.

In another aspect, the weighting factor associated with the powerutilization is based at least in part upon power consumption, asmeasured or estimated, of respective ones of the plurality ofcommunication channels.

In another embodiment, the power utilization of at least one of theplurality of communication channels comprises power required totransition a software-defined radio (SDR) from a first configurationinto a second configuration.

In another variation, the method further comprises, prior totransmitting the data, queuing the data and transmitting the data upontoggling from the selected channel to a higher-cost communicationchannel when a queue length results in a predetermined threshold valueof unacceptable latency cost associated with the queuing.

In another embodiment, the selected communication channel enablestransmission of the data between the asset tracker and the servercomputing device via at least one of: one or more cellular communicationproviders and one or more satellite communication providers.

Also provided is a server computing device comprising a processor and amemory. The memory includes instructions which, when executed in theprocessor causing operations comprising: receiving data, in a memory ofthe server computing device, from an asset tracker device; determining,in a processor of the server computing device, one or more weightingfactors representing a respective priority associated with one or moreof a latency, a cost, a power utilization and a throughput associatedwith transmission of the data for each of a plurality of communicationchannels; and selecting, from the plurality of communication channels, acommunication channel for transmission of the data based at least inpart on the one or more weighting factors and a transmission schedulefor the data.

BRIEF DESCRIPTION OF THE DRAWING FIGURES

The accompanying drawings illustrate several embodiments and, togetherwith the description, serve to explain the principles of the inventionaccording to the embodiments. It will be appreciated by one skilled inthe art that the particular arrangements illustrated in the drawings aremerely exemplary and are not to be considered as limiting of the scopeof the invention or the claims herein in any way.

FIG. 1 illustrates a system for selecting an appropriate communicationchannel with an exemplary embodiment of the invention.

FIG. 2 illustrates an implementation of the channel selector inaccordance with an embodiment of the invention.

FIG. 3 illustrates a flowchart for selecting an appropriatecommunication channel in accordance with an exemplary embodiment of thepresent invention.

FIG. 4 illustrates an exemplary computing device that supports anembodiment of the inventive disclosure.

FIG. 5 illustrates an exemplary standalone computing system thatsupports an embodiment of the inventive disclosure.

FIG. 6 illustrates on embodiment of the computing architecture thatsupports an embodiment of the inventive disclosure.

FIG. 7 illustrates an exemplary overview of a computer system thatsupports an embodiment of the inventive disclosure.

DETAILED DESCRIPTION

The inventive systems and methods (hereinafter sometimes referred tomore simply as “system” or “method”) described herein significantlyreduce the time and/or cost it takes to transmit data from a remotesensor to a user. Specifically, the system receives a communicationrequest. The system performs preliminary analysis of the receivedrequest. The system determines one or more weighting factors related totwo or more available communication channels. The system selects acommunication channel from the available communication channels based onthe preliminary analysis performed and the determined one or moreweighting factors. The system prepares a message including the data inaccordance with the communication request for transmission via theselected communication channel. The system causes the message to betransmitted via the selected communication channel.

One or more different embodiments may be described in the presentapplication. Further, for one or more of the embodiments describedherein, numerous alternative arrangements may be described; it should beappreciated that these are presented for illustrative purposes only andare not limiting of the embodiments contained herein or the claimspresented herein in any way. One or more of the arrangements may bewidely applicable to numerous embodiments, as may be readily apparentfrom the disclosure. In general, arrangements are described insufficient detail to enable those skilled in the art to practice one ormore of the embodiments, and it should be appreciated that otherarrangements may be utilized and that structural, logical, software,electrical and other changes may be made without departing from thescope of the embodiments. Particular features of one or more of theembodiments described herein may be described with reference to one ormore particular embodiments or figures that form a part of the presentdisclosure, and in which are shown, by way of illustration, specificarrangements of one or more of the aspects. It should be appreciated,however, that such features are not limited to usage in the one or moreparticular embodiments or figures with reference to which they aredescribed. The present disclosure is neither a literal description ofall arrangements of one or more of the embodiments nor a listing offeatures of one or more of the embodiments that must be present in allarrangements.

Headings of sections provided in this patent application and the titleof this patent application are for convenience only and are not to betaken as limiting the disclosure in any way.

Devices that are in communication with each other need not be incontinuous communication with each other, unless expressly specifiedotherwise. In addition, devices that are in communication with eachother may communicate directly or indirectly through one or morecommunication means or intermediaries, logical or physical.

A description of an aspect with several components in communication witheach other does not imply that all such components are required. To thecontrary, a variety of optional components may be described toillustrate a wide variety of possible embodiments and in order to morefully illustrate one or more embodiments. Similarly, although processsteps, method steps, algorithms or the like may be described in asequential order, such processes, methods and algorithms may generallybe configured to work in alternate orders, unless specifically stated tothe contrary. In other words, any sequence or order of steps that may bedescribed in this patent application does not, in and of itself,indicate a requirement that the steps be performed in that order. Thesteps of described processes may be performed in any order practical.Further, some steps may be performed simultaneously despite beingdescribed or implied as occurring non-simultaneously (e.g., because onestep is described after the other step). Moreover, the illustration of aprocess by its depiction in a drawing does not imply that theillustrated process is exclusive of other variations and modificationsthereto, does not imply that the illustrated process or any of its stepsare necessary to one or more of the embodiments, and does not imply thatthe illustrated process is preferred. Also, steps are generallydescribed once per aspect, but this does not mean they must occur once,or that they may only occur once each time a process, method, oralgorithm is carried out or executed. Some steps may be omitted in someembodiments or some occurrences, or some steps may be executed more thanonce in a given aspect or occurrence.

When a single device or article is described herein, it will be readilyapparent that more than one device or article may be used in place of asingle device or article. Similarly, where more than one device orarticle is described herein, it will be readily apparent that a singledevice or article may be used in place of the more than one device orarticle.

The functionality or the features of a device may be alternativelyembodied by one or more other devices that are not explicitly describedas having such functionality or features. Thus, other embodiments neednot include the device itself.

Techniques and mechanisms described or referenced herein will sometimesbe described in singular form for clarity. However, it should beappreciated that particular embodiments may include multiple iterationsof a technique or multiple instantiations of a mechanism unless notedotherwise. Process descriptions or blocks in figures should beunderstood as representing modules, segments, or portions of code whichinclude one or more executable instructions for implementing specificlogical functions or steps in the process. Alternate implementations areincluded within the scope of various embodiments in which, for example,functions may be executed out of order from that shown or discussed,including substantially concurrently or in reverse order, depending onthe functionality involved, as would be understood by those havingordinary skill in the art.

FIG. 1 illustrates a system for selecting a communication channel withan exemplary embodiment of the invention. The system may comprise one ormore asset tracker(s) 110, a communication system 120, one or morecellular communication provider(s) 130, one or more satellitecommunication provider(s) 140, and a network 150 over which varioussystems communicate and interact. The communication system 120 maycomprise one or more radios, such as a cellular receiver, a cellulartransmitter, a cellular transceiver, a satellite receiver, a satellitetransmitter, a satellite transceiver, a receive path software-definedradio (SDR) 122, a transmit path SDR 124, and the like. Thecommunication system 120 may comprise a channel selector 126. Thechannel selector 126 will be described in greater detail in FIG. 2below; however, generally, the channel selector 126 selects a radioand/or a configuration for a radio via which a message is sent. Thevarious computing devices described herein are exemplary and forillustration purposes only. The system may be reorganized orconsolidated, as understood by a person of ordinary skill in the art, toperform the same tasks on one or more other servers or computing deviceswithout departing from the scope of the invention.

The one or more asset tracker(s) 110 may comprise one or more sensors tocollect data relevant to a tracked asset. The one or more assettracker(s) 110 may provide the collected data to one or more remoteuser(s). The one or more asset tracker(s) 110 may comprise an Internetof Things (IoT) device. For clarity, the term asset tracker or assettracker device as used herein includes IoT devices, and also distributedsensors such as may be deployed in a data acquisition and communicationnetwork. An IoT device as referred to herein includes a machine that can(1) sense (2) compute, and (3) communicatively connect. Thecommunication system 120 may comprise one or more radios, such as acellular receiver, a cellular transmitter, a cellular transceiver, asatellite receiver, a satellite transmitter, a satellite transceiver, areceive path software-defined radio (SDR) 122, a transmit path SDR 124(which may further include a loopback path (TX->RX that may be used forcalibration and real-time performance analysis of generated RF waveformsin, for example, baseband, IF, and/or RF paths), and the like. In oneembodiment of the invention, the communication system 120 may beembodied in an asset tracker 110. In another embodiment, the assettracker 110 may use a variety of communicationsystems/methodologies/architecture that are described herein and/or maybe known to a person of ordinary skill in the art. In such instances,the asset tracker 110 may optimize a communication methodology based onone or more of the following: cost, speed, throughput, etc., asdescribed in greater detail below.

The communication system 120 may be in direct communication with the oneor more asset tracker(s) 110. The communication system 120 may comprisea computing device. The communication system 120 may comprise asatellite. The communication system 120 may be integrated with the oneor more asset tracker(s) 110 into a single device. In an embodiment, thecommunication system 120 may receive communication requests from the oneor more asset tracker(s) 110 and return communication channelinstructions to the one or more asset tracker(s) 110. In an embodiment,the communication system 120 may act as an intermediary device for theone or more asset tracker(s) 110 and forward data received from the oneor more asset tracker(s) 110 via a selected communication channel.

The one or more cellular communication provider(s) 130 may compriseGlobal System for Mobile (GSM) service, General Packet Radio Service(GPRS) service, Third Generation (3G) service, Long Term Evolution (LTE)service, Fourth Generation (4G) service, Fifth Generation (5G) service,any other type of cellular service, and/or any combination of theforegoing. The one or more cellular communication provider(s) 130 mayprovide cellular communication to devices associated with subscribers.Each of the one or more cellular communication provider(s) 130 may use aparticular set of security protocols to protect messages transmitted viaan associated cellular communication link.

The one or more satellite communication provider(s) 140 may providesatellite communication to devices associated with subscribers. Each ofthe one or more satellite communication provider(s) 140 may use aparticular set of security protocols to protect messages transmitted viaan associated satellite communication link.

The various computing devices disclosed herein may be embodied invarious computing devices (herein referred to as user input device, userdevice, or client device) including functionality for communicating(e.g., remotely) over a network 150. Various computing devices areillustrated in some of the subsequent figures provided herein. Thisdisclosure contemplates any suitable number of user devices, includingcomputing systems taking any suitable physical form. As example and notby way of limitation, computing systems may be an embedded computersystem, a system-on-chip (SOC), a single-board computer system (SBC)(such as, for example, a computer-on-module (COM) or system-on-module(SOM)), a desktop computer system, a laptop or notebook computer system,an interactive kiosk, a mainframe, a mesh of computer systems, a mobiletelephone, a personal digital assistant (PDA), a server, or acombination of two or more of these. Where appropriate, the computingsystem may include one or more computer systems; be unitary ordistributed; span multiple locations; span multiple machines; or residein a cloud, which may include one or more cloud components in one ormore networks. Where appropriate, one or more computing systems mayperform without substantial spatial or temporal limitation one or moresteps of one or more methods described or illustrated herein. As anexample, and not by way of limitation, one or more computing systems mayperform in real time or in batch mode one or more steps of one or moremethods described or illustrated herein. One or more computing systemmay perform at different times or at different locations one or moresteps of one or more methods described or illustrated herein, whereappropriate.

The network 150 generally represents a network or collection of networks(such as the Internet or a corporate intranet, or a combination of both)over which the various components illustrated in FIG. 1 (including othercomponents that may be necessary to execute the system described herein,as would be readily understood to a person of ordinary skill in theart). In particular embodiments, network 150 is an intranet, anextranet, a virtual private network (VPN), a local area network (LAN), awireless LAN (WLAN), a wide area network (WAN), a metropolitan areanetwork (MAN), a portion of the Internet, or another network 150 or acombination of two or more such networks 150. One or more links connectthe systems and databases described herein to the network 150. Inparticular embodiments, one or more links each includes one or morewired, wireless, or optical links. In particular embodiments, one ormore links each includes an intranet, an extranet, a VPN, a LAN, a WLAN,a WAN, a MAN, a portion of the Internet, or another link or acombination of two or more such links. The present disclosurecontemplates any suitable network 150, and any suitable link forconnecting the various systems and databases described herein.

The network 150 connects the various systems and computing devicesdescribed or referenced herein. In particular embodiments, network 150is an intranet, an extranet, a virtual private network (VPN), a localarea network (LAN), a wireless LAN (WLAN), a wide area network (WAN), ametropolitan area network (MAN), a portion of the Internet, or anothernetwork or a combination of two or more such networks 150. The presentdisclosure contemplates any suitable network 150.

One or more links couple one or more systems, engines or devices to thenetwork 150. In particular embodiments, one or more links each includesone or more wired, wireless, or optical links. In particularembodiments, one or more links each includes an intranet, an extranet, aVPN, a LAN, a WLAN, a WAN, a MAN, a portion of the Internet, or anotherlink or a combination of two or more such links. The present disclosurecontemplates any suitable links coupling one or more systems, engines ordevices to the network 150.

In particular embodiments, each system or engine may be a unitary serveror may be a distributed server spanning multiple computers or multipledatacenters. Systems, engines, or modules may be of various types, suchas, for example and without limitation, web server, news server, mailserver, message server, advertising server, file server, applicationserver, exchange server, database server, or proxy server. In particularembodiments, each system, engine or module may include hardware,software, or embedded logic components or a combination of two or moresuch components for carrying out the appropriate functionalitiesimplemented or supported by their respective servers. For example, a webserver is generally capable of hosting websites containing web pages orparticular elements of web pages. More specifically, a web server mayhost HTML files or other file types, or may dynamically create orconstitute files upon a request, and communicate them to client devicesor other devices in response to HTTP or other requests from clientdevices or other devices. A mail server is generally capable ofproviding electronic mail services to various client devices or otherdevices. A database server is generally capable of providing aninterface for managing data stored in one or more data stores.

In particular embodiments, one or more data storages may becommunicatively linked to one or more servers via one or more links. Inparticular embodiments, data storages may be used to store various typesof information. In particular embodiments, the information stored indata storages may be organized according to specific data structures. Inparticular embodiment, each data storage may be a relational database.Particular embodiments may provide interfaces that enable servers orclients to manage, e.g., retrieve, modify, add, or delete, theinformation stored in data storage.

The system may also contain other subsystems and databases, which arenot illustrated in FIG. 1, but would be readily apparent to a person ofordinary skill in the art. For example, the system may include databasesfor storing data, storing features, storing outcomes (training sets),and storing models. Other databases and systems may be added orsubtracted, as would be readily understood by a person of ordinary skillin the art, without departing from the scope of the invention.

FIG. 2 illustrates an implementation of the communication channelselecting system in accordance with an embodiment of the invention. Thechannel selector 126 selects a communication channel based on currentconditions and an analysis of a message to be transmitted. The channelselector 126 may comprise a lookup table 202, a cost calculator 204, aspeed and/or latency calculator 206, a budget and/or throughputcalculator 208, a power utilization calculator 210, a power utilizationsystem 211, and a decision engine 218. Other systems and databases maybe used, as would be readily understood by a person of ordinary skill inthe art, without departing from the scope of the invention.

The lookup table 202 may comprise real-time and/or near real-time datarelevant to selecting a communication channel. The lookup table 202 maycomprise cost information associated with each communication channeloption. The lookup table 202 may comprise service information associatedwith each communication channel option. Service information may compriselatency (e.g., speed, etc.) and/or throughput (e.g., budget, etc.)information. The lookup table 202 may comprise power usage information.

The cost calculator 204 may calculate a cost associated with eachcommunication channel. The cost calculator 204 may use information fromthe lookup table 202 to calculate a cost associated with eachcommunication channel. Cost may be based, at least in part, on abyte-wise price set by a subscription contract with a service provider,such as one of the one or more cellular communication provider(s) 130 inFIG. 1 or one of the one or more satellite communication provider(s) 140in FIG. 1. The cost calculator 204 may provide a calculated costassociated with each communication channel to the decision engine 218.

The speed and/or latency calculator 206 may calculate a latencyassociated with each communication channel. The speed and/or latencycalculator 206 may use information from the lookup table 202 tocalculate a latency associated with each communication channel. Latencymay be based, at least in part, on a relevant distance. The relevantdistance may comprise a distance between components of a provider'ssystem, such as a distance between a satellite and a ground station forone of the one or more satellite communication provider(s) 140 inFIG. 1. The relevant distance may comprise a distance between thecommunication system 120 in FIG. 1 or one of the one or more assettracker(s) 110 in FIG. 1 and a component of a provider's system, such asa distance between one of the one or more asset tracker(s) 110 in FIG. 1and a cellular tower of one of the one or more cellular communicationprovider(s) 130 in FIG. 1. The relevant distance may comprise a distancebetween the communication system 120 in FIG. 1 and one of the one ormore asset tracker(s) 110 in FIG. 1. The speed and/or latency calculator206 may provide a calculated latency associated with each communicationchannel to the decision engine 218.

The budget and/or throughput calculator 208 may calculate a throughputassociated with each communication channel. The budget and/or throughputcalculator 208 may use information from the lookup table 202 tocalculate a throughput associated with each communication channel.Throughput for a particular communication channel may be based, at leastin part, on an instantaneous bandwidth associated with the particularcommunication channel. The budget and/or throughput calculator 208 mayprovide a calculated throughput associated with each communicationchannel to the decision engine 218.

The power utilization calculator 210 may calculate a power usageassociated with each communication channel. The power utilizationcalculator 210 may use information from the lookup table 202 tocalculate a power usage associated with each communication channel. Thepower utilization calculator 210 may use information from the powerutilization system 211 to calculate a power usage associated with eachcommunication channel. Power usage for a particular communicationchannel may be based, at least in part, on a power usage of a radioassociated with the particular communication channel. Power usage for aparticular communication channel may be based, at least in part, on apower needed to transition a software-defined radio (SDR) from a firstconfiguration into a second configuration associated with the particularcommunication channel. The power utilization calculator 210 may providethe calculated power usage associated with each communication channel tothe decision engine 218.

The power utilization system 211 may comprise components monitored forpower usage. The power utilization system 211 may comprise the locationmonitoring system 212, the preliminary analysis engine 214, and theoffload analysis engine 216. The power utilization system 211 may updatethe lookup table 202 with power usage information. The power utilizationsystem 211 may provide power usage information to the power utilizationcalculator 210. In embodiments, power consumption associated with one ormore individual communication channels may be derived based on actualmeasurements of power consumed, a computation of the power consumed, ora simulation result pertaining to power consumed.

The location monitoring system 212 may maintain location informationneeded to calculate latency. The location information needed tocalculate latency may comprise satellite location information, cellulartower location information, asset tracker location information,intermediary computing device location information, etc. The locationmonitoring system 212 may update the lookup table 202 with locationinformation. The location monitoring system 212 may provide locationinformation to the speed and/or latency calculator 206.

The preliminary analysis engine 214 may analyze a communication requestfrom one of the one or more asset tracker(s) 110 in FIG. 1. Thecommunication request may comprise a request to transmit data from theone of the one or more asset tracker(s) 110 in FIG. 1 to a computingdevice accessible by a user. The preliminary analysis engine 214 maydetermine information about the data. For example, the preliminaryanalysis engine 214 may determine if the data comprises urgentinformation, how much bandwidth the data needs, if it makes sense tostore all the data for a 24-hour period and send it in one batch, etc.Based on the determinations, the preliminary analysis engine 214 maydetermine a priority associated with each of the cost, latency,throughput, and power usage associated with transmitting the data. Basedon the determined priorities, the preliminary analysis engine 214 mayassign a gain (e.g., coefficient, weight, factor, etc.) to each of thecost, latency, throughput, and power usage. The preliminary analysisengine 214 may comprise and/or be in communication with an artificialintelligence engine that improves the performance of the preliminaryanalysis engine 214 based on historical data associated with performanceof the channel selector 126. The artificial intelligence engine may becomprised of a training system and an analysis system. The trainingand/or analysis may be performed on a batched dataset and/or inreal-time as incoming analysis requests are made, as would be apparentto a person of ordinary skill in the art. In one instance, theartificial intelligence engine may be used to identify and omit invalidoutlier data which may be an artifact from noise, temperature,uncalibrated sensors, and/or poor absolute accuracy on sensors and/orasset trackers 110. In one instance, the artificial intelligence enginemay apply predictive analytics to determine when an asset tracker 110should be serviced, and/or replaced. The artificial intelligence systemmay be used to identify areas with minimal and/or inconsistent coverage(i.e. “dead spots”) based on historical training data. The artificialintelligence engine may also determine expected paths of an assettracker 110 based on historical training data. For example, if an assettracker 110 moves from one location to the next, the algorithm canpredict the expected path and segment the time series data intosessions/routes for the customer to see. Then the route can besuperimposed on a real-time map, showing the customer the expected pathand time of delivery. In one variation, the weighting factor associatedwith the latency is based at least partly upon the transmission distanceassociated with a location along the predicted or expected path of theasset tracker in conjunction with an expected time of delivery of thedata transmission.

SDR transition usage engine (not shown) may determine a power usage fora particular communication channel associated with changing aconfiguration of an SDR from a current configuration into aconfiguration associated with the particular communication channel. TheSDR transition usage engine may update the lookup table 202 with powerusage information. The SDR transition usage engine may provide powerusage information to the power utilization calculator 210.

The offload analysis engine 216 may schedule data for transmission. Theoffload analysis engine 216 may determine which data may be queued forlater transmission and which data should be transmitted immediately. Theoffload analysis engine 216 may use the priorities determined by thepreliminary analysis engine 214 in making determinations regarding datatransmission order. The offload analysis engine 216 may schedule a setof data for batch transmission. The offload analysis engine 216 may basethe data transmission schedule, at least in part, on latency and/orthroughput information of the communication channel options.

The decision engine 218 may select a communication channel fortransmitting data received from an asset tracker. The decision engine218 may select the communication channel based on the determined cost,latency, throughput, and power usage of each communication channel, andbased on the associated gains assigned based on the determined datapriority. The decision engine 218 may apply the gains received from thepreliminary analysis engine 214. The decision engine 218 may assign again to each of the cost, latency, throughput, and power usage based onpriorities received from the preliminary analysis engine 214. Thedecision engine 218 may select the communication channel based on atransmission schedule of the offload analysis engine 216. The decisionengine 218 may cause a signal indicative of the selected communicationchannel to be transmitted to an asset tracker which initiated acommunication request. The decision engine 218 may cause a signalindicative of the selected communication channel to be transmitted to anintermediary computing device associated with an asset tracker whichinitiated a communication request. The decision engine 218 may cause asignal indicative of the selected communication channel to betransmitted to a satellite. The decision engine 218 may cause a selectedcommunication channel radio to be turned on and an unselectedcommunication channel radio to be turned off. The decision engine 218may cause a configuration of one or more SDR radios to be changed to asetting associated with the selected communication channel.

FIG. 3 illustrates a flowchart for selecting a communication channel inaccordance with an exemplary embodiment of the present invention. Inembodiments, processes for transmitting data comprise receiving data, ina memory of the server computing device, from an asset tracker device,determining, in a processor of the server computing device, one or moreweighting factors representing a respective priority associated with oneor more of a latency, a cost, a power utilization and a throughputassociated with transmission of the data for each of a plurality ofcommunication channels and selecting, from the plurality ofcommunication channels, a communication channel for transmission of thedata based at least in part on the one or more weighting factors and atransmission schedule for the data.

At 302, a communication request may be received. For example, thecommunication system 120 in FIG. 1 may receive a communication requestfrom one of the one or more asset tracker(s) 110 in FIG. 1. Thecommunication request may comprise a request to make data collected bythe one of the one or more asset tracker(s) 110 available to a remoteuser, via transmission thereto. The communication request may comprisethe data, in one embodiment

At 304, a preliminary analysis may be performed on the data. Forexample, the preliminary analysis engine 214 in FIG. 2 may perform apreliminary analysis on the data. The preliminary analysis may determinepriorities regarding the data. A gain (e.g., coefficient, weight,factor, etc.) may be determined and assigned to one or more of cost,latency, throughput, and/or power utilization, for transmission of thedata based on the determined priorities.

At 306, a gain or weighting factor may be determined based on, andassociated with, costs associated with particular channels in aplurality of communication channels. For example, the cost calculator204 in FIG. 2 may determine a cost associated with one of the one ormore cellular communication provider(s) 130 in FIG. 1 and a costassociated with one of the one or more satellite communicationprovider(s) 140 in FIG. 1. Cost may be based, at least in part, on abyte-wise price set by a subscription contract with a service provider,such as the one of the one or more cellular communication provider(s)130 in FIG. 1 or the one of the one or more satellite communicationprovider(s) 140 in FIG. 1. The cost weighting factor as determined mayreflect preference for a lower cost communication channel as compared toa higher cost channel, in embodiments, in accordance with a desiredschedule for the data transmission.

At 308, a gain or weighting factor may be determined based on, andassociated with, speed and/or latency associated with a plurality ofcommunication channels may be determined. For example, the speed and/orlatency calculator 206 in FIG. 2 may determine a speed and/or latencyassociated with the one of the one or more of the cellular communicationprovider(s) 130 in FIG. 1 and a speed and/or latency associated with theone of the one or more of the satellite communication provider(s) 140 inFIG. 1. Speed and/or latency may be based, at least in part, on arelevant distance. The relevant distance may comprise a distance betweencomponents of a provider's system, such as a distance between asatellite and a ground station for the one of the one or more satellitecommunication provider(s) 140 in FIG. 1. The relevant distance maycomprise a distance between the communication system 120 in FIG. 1 orone of the one or more asset tracker(s) 110 in FIG. 1 and a component ofa provider's system, such as a distance between one of the one or moreasset tracker(s) 110 in FIG. 1 and a cellular tower of the one of theone or more cellular communication provider(s) 130 in FIG. 1. Therelevant distance may comprise a distance between the communicationsystem 120 in FIG. 1 and one of the one or more asset tracker(s) 110 inFIG. 1.

At 310, a gain or weighting factor may be determined based on budgetand/or throughput associated with a plurality of communication channelsmay be determined. For example, the budget and/or throughput calculator208 in FIG. 2 may determine a budget and/or throughput associated withthe one of the one or more of the cellular communication provider(s) 130in FIG. 1 and a budget and/or throughput associated with the one of theone or more of the satellite communication provider(s) 140 in FIG. 1.Budget and/or throughput may be based, at least in part, on aninstantaneous bandwidth, such as instantaneous bandwidth of acommunication channel provided by the one of the one or more cellularcommunication provider(s) 130 in FIG. 1 and/or the one of the one ormore satellite communication provider(s) 140 in FIG. 1.

At 312, a gain or weighting factor may be determined based on powerutilization associated with a plurality of communication channels may bedetermined. For example, the power utilization calculator 210 in FIG. 2may determine power utilization associated with the one of the one ormore of the cellular communication provider(s) 130 in FIG. 1 and powerutilization associated with the one of the one or more of the satellitecommunication provider(s) 140 in FIG. 1. Power utilization for aparticular communication channel may be based, at least in part, on apower usage of a radio associated with the particular communicationchannel. Power utilization for a particular communication channel may bebased, at least in part, on a power needed to transition asoftware-defined radio (SDR) from a first configuration into a secondconfiguration associated with the particular communication channel.

At 314, a communication channel selection may be made. For example, thedecision engine 218 in FIG. 2 may make a communication channel selectionbetween the one of the one or more cellular communication provider(s)130 in FIG. 1 and/or the one of the one or more satellite communicationprovider(s) 140 in FIG. 1. The decision engine 218 may receive costsassociated with a plurality of communication channels from the costcalculator 204 in FIG. 2. The decision engine 218 may receive speedsand/or latencies associated with the plurality of communication channelsfrom the speed and/or latency calculator 206 in FIG. 2. The decisionengine 218 may receive budgets and/or throughputs associated with theplurality of communication channels from the budget and/or throughputcalculator 208 in FIG. 2. The decision engine 218 may receive powerutilizations associated with the plurality of communication channelsfrom the power utilization calculator 210 in FIG. 2. The decision engine218 may receive determined gains from the preliminary analysis engine214 in FIG. 2. The decision engine 218 may apply the gains based onpriorities received from the preliminary analysis engine 214 in FIG. 2.The decision engine 218 may use the received information about theplurality of communication channels and the gains based on prioritiesassociated with the data to select a communication channel fortransmission of the data. The decision engine 218 may select thecommunication channel based, at least in part, on a transmissionschedule determined by the offload analysis engine 216 in FIG. 2.

The decision engine 218 may cause a signal indicative of the selectedcommunication channel to be transmitted to an asset tracker whichinitiated a communication request. The decision engine 218 may cause asignal indicative of the selected communication channel to betransmitted to an intermediary computing device associated with an assettracker which initiated a communication request. The decision engine 218may cause a signal indicative of the selected communication channel tobe transmitted to a satellite. The decision engine 218 may cause aselected communication channel radio to be turned on and an unselectedcommunication channel radio to be turned off. The decision engine 218may cause a configuration of one or more SDR radios to be changed to asetting associated with the selected communication channel. In oneembodiment, the decision engine 218 may also queue the data to be sentover a lower-cost communications channel such that the higher-costcommunications channel is not used. If the queue grows over a determinedthreshold by the decision engine 218 (as determined by acceptablelatency cost from queuing), then the decision engine 218 may toggle tothe higher-cost communications channel (ensuring that transmitted datais not further delayed). In one example, an asset tracker 110 may beusing LTE-M, sending data every 10 seconds. Satellite costs areconsiderably higher, so if the asset tracker 110 can queue 6 samples (60seconds) and hold off from transmitting via satellite, process/systemcan save money even if the data is delayed for ˜1 minute. The flowchartmay optionally proceed to 316 when a software-defined radio (SDR) isused. In embodiments, upon selecting the communication channel,switching on the selected communication channel comprises transitioningthe SDR associated with the selected communication channel from a firstconfiguration into a second configuration.

In some variations, prior to transmitting the data via the selectedchannel, further embodiments can include performing an in-phase andquadrature (IQ) modulation operation driven at least in part usingdigital-to-analog converters. In the particular embodiment at 316, anSDR may transition to a configuration to demodulate for the selectedcommunication channel (or may be inherently be comprised in selecting aradio). For example, the receive path SDR 122 in FIG. 1 may transitionto a configuration to demodulate for the selected communication channel.

-   RX: A Typical RF Receive path is:-   RF Signal->[HW, Antenna]->[HW, Downconvert]->[HW, I/Q    Sampling]->[SW, Demodulate]->[SW, Decode]->Data-   On an SDR, an RF Receive path typically uses Direct Down Conversion    (DDC):-   RF Signal->[HW, Antenna]->[HW, DDC]->[SW, Demodulate]->[SW,    Decode]->Data-   TX: A Typical RF Transmit path is:-   Data ->[SW, Encode]->[SW, Modulate]->[HW, Generate I/Q    Waveforms]->[HW, Upconvert]->[HW, Antenna]->RF Signal-   On an SDR, an TX Receive path typically uses Direct Up Conversion    (DUC):-   Data->[SW, Encode]->[SW, Modulate]->[HW, DUC]->[HW, Antenna]->RF    Signal

Generally, performance metrics may be extracted from different parts ofthe RX path; latency from Data (with timestamps); bit error rate/packeterror rate from data and/or from the integrated circuit (IC) or SDR;strength of received signal from I/Q sampling (may be observed asreceive strength sensitivity indicator (RSSI) outputted from the IC orSDR; modulation quality from Demodulate—(oftentimes observed from outputfrom the IC or SDR); etc.

Generally, the techniques disclosed herein may be implemented onhardware or a combination of software and hardware. For example, theymay be implemented in an operating system kernel, in a separate userprocess, in a library package bound into network applications, on aspecially constructed machine, on an application-specific integratedcircuit (ASIC), or on a network interface card.

Software/hardware hybrid implementations of at least some of theembodiments disclosed herein may be implemented on a programmablenetwork-resident machine (which should be understood to includeintermittently connected network-aware machines) selectively activatedor reconfigured by a computer program stored in memory. Such networkdevices may have multiple network interfaces that may be configured ordesigned to utilize different types of network communication protocols.A general architecture for some of these machines may be describedherein in order to illustrate one or more exemplary means by which agiven unit of functionality may be implemented. According to specificembodiments, at least some of the features or functionalities of thevarious embodiments disclosed herein may be implemented on one or moregeneral-purpose computers associated with one or more networks, such asfor example an end-user computer system, a client computer, a networkserver or other server system, a mobile computing device (e.g., tabletcomputing device, mobile phone, smartphone, laptop, or other appropriatecomputing device), a consumer electronic device, a music player, or anyother suitable electronic device, router, switch, or other suitabledevice, or any combination thereof. In at least some embodiments, atleast some of the features or functionalities of the various embodimentsdisclosed herein may be implemented in one or more virtualized computingenvironments (e.g., network computing clouds, virtual machines hosted onone or more physical computing machines, or other appropriate virtualenvironments).

Referring now to FIG. 4, there is shown a block diagram depicting anexemplary computing device 10 suitable for implementing at least aportion of the features or functionalities disclosed herein. Computingdevice 10 may be, for example, any one of the computing machines listedin the previous paragraph, or indeed any other electronic device capableof executing software- or hardware-based instructions according to oneor more programs stored in memory. Computing device 10 may be configuredto communicate with a plurality of other computing devices, such asclients or servers, over communications networks such as a wide areanetwork a metropolitan area network, a local area network, a wirelessnetwork, the Internet, or any other network, using known protocols forsuch communication, whether wireless or wired.

In one aspect, computing device 10 includes one or more centralprocessing units (CPU) 12, one or more interfaces 15, and one or morebusses 14 (such as a peripheral component interconnect (PCI) bus). Whenacting under the control of appropriate software or firmware, CPU 12 maybe responsible for implementing specific functions associated with thefunctions of a specifically configured computing device or machine. Forexample, in at least one aspect, a computing device 10 may be configuredor designed to function as a server system utilizing CPU 12, localmemory 11 and/or remote memory 16, and interface(s) 15. In at least oneaspect, CPU 12 may be caused to perform one or more of the differenttypes of functions and/or operations under the control of softwaremodules or components, which for example, may include an operatingsystem and any appropriate applications software, drivers, and the like.

CPU 12 may include one or more processors 13 such as, for example, aprocessor from one of the Intel, ARM, Qualcomm, and AMD families ofmicroprocessors. In some embodiments, processors 13 may includespecially designed hardware such as application-specific integratedcircuits (ASICs), electrically erasable programmable read-only memories(EEPROMs), field-programmable gate arrays (FPGAs), and so forth, forcontrolling operations of computing device 10. In a particular aspect, alocal memory 11 (such as non-volatile random-access memory (RAM) and/orread-only memory (ROM), including for example one or more levels ofcached memory) may also form part of CPU 12. However, there are manydifferent ways in which memory may be coupled to system 10. Memory 11may be used for a variety of purposes such as, for example, cachingand/or storing data, programming instructions, and the like. It shouldbe further appreciated that CPU 12 may be one of a variety ofsystem-on-a-chip (SOC) type hardware that may include additionalhardware such as memory or graphics processing chips, such as a QUALCOMMSNAPDRAGON™ or SAMSUNG EXYNOS™ CPU as are becoming increasingly commonin the art, such as for use in mobile devices or integrated devices.

As used herein, the term “processor” is not limited merely to thoseintegrated circuits referred to in the art as a processor, a mobileprocessor, or a microprocessor, but broadly refers to a microcontroller,a microcomputer, a programmable logic controller, anapplication-specific integrated circuit, and any other programmablecircuit.

In one aspect, interfaces 15 are provided as network interface cards(NICs). Generally, NICs control the sending and receiving of datapackets over a computer network; other types of interfaces 15 may forexample support other peripherals used with computing device 10. Amongthe interfaces that may be provided are Ethernet interfaces, frame relayinterfaces, cable interfaces, DSL interfaces, token ring interfaces,graphics interfaces, and the like. In addition, various types ofinterfaces may be provided such as, for example, universal serial bus(USB), Serial, Ethernet, FIREWIRE™, THUNDERBOLT™, PCI, parallel, radiofrequency (RF), BLUETOOTH™, near-field communications (e.g., usingnear-field magnetics), 802.11 (WiFi), frame relay, TCP/IP, ISDN, fastEthernet interfaces, Gigabit Ethernet interfaces, Serial ATA (SATA) orexternal SATA (ESATA) interfaces, high-definition multimedia interface(HDMI), digital visual interface (DVI), analog or digital audiointerfaces, asynchronous transfer mode (ATM) interfaces, high-speedserial interface (HSSI) interfaces, Point of Sale (POS) interfaces,fiber data distributed interfaces (FDDIs), and the like. Generally, suchinterfaces 15 may include physical ports appropriate for communicationwith appropriate media. In some cases, they may also include anindependent processor (such as a dedicated audio or video processor, asis common in the art for high-fidelity A/V hardware interfaces) and, insome instances, volatile and/or non-volatile memory (e.g., RAM).

Although the system shown in FIG. 4 illustrates one specificarchitecture for a computing device 10 for implementing one or more ofthe embodiments described herein, it is by no means the only devicearchitecture on which at least a portion of the features and techniquesdescribed herein may be implemented. For example, architectures havingone or any number of processors 13 may be used, and such processors 13may be present in a single device or distributed among any number ofdevices. In one aspect, single processor 13 handles communications aswell as routing computations, while in other embodiments a separatededicated communications processor may be provided. In variousembodiments, different types of features or functionalities may beimplemented in a system according to the aspect that includes a clientdevice (such as a tablet device or smartphone running client software)and server systems (such as a server system described in more detailbelow).

Regardless of network device configuration, the system of an aspect mayemploy one or more memories or memory modules (such as, for example,remote memory block 16 and local memory 11) configured to store data,program instructions for the general-purpose network operations, orother information relating to the functionality of the embodimentsdescribed herein (or any combinations of the above). Programinstructions may control execution of or comprise an operating systemand/or one or more applications, for example. Memory 16 or memories 11,16 may also be configured to store data structures, configuration data,encryption data, historical system operations information, or any otherspecific or generic non-program information described herein.

The computing device 10 may be and/or comprise the channel selector 126.

Because such information and program instructions may be employed toimplement one or more systems or methods described herein, at least somenetwork device embodiments may include nontransitory machine-readablestorage media, which, for example, may be configured or designed tostore program instructions, state information, and the like forperforming various operations described herein. Examples of suchnontransitory machine-readable storage media include, but are notlimited to, magnetic media such as hard disks, floppy disks, andmagnetic tape; optical media such as CD-ROM disks; magneto-optical mediasuch as optical disks, and hardware devices that are speciallyconfigured to store and perform program instructions, such as read-onlymemory devices (ROM), flash memory (as is common in mobile devices andintegrated systems), solid state drives (SSD) and “hybrid SSD” storagedrives that may combine physical components of solid state and hard diskdrives in a single hardware device (as are becoming increasingly commonin the art with regard to personal computers), memristor memory, randomaccess memory (RAM), and the like. It should be appreciated that suchstorage means may be integral and non-removable (such as RAM hardwaremodules that may be soldered onto a motherboard or otherwise integratedinto an electronic device), or they may be removable such as swappableflash memory modules (such as “thumb drives” or other removable mediadesigned for rapidly exchanging physical storage devices),“hot-swappable” hard disk drives or solid state drives, removableoptical storage discs, or other such removable media, and that suchintegral and removable storage media may be utilized interchangeably.Examples of program instructions include both object code, such as maybe produced by a compiler, machine code, such as may be produced by anassembler or a linker, byte code, such as may be generated by forexample a JAVA™ compiler and may be executed using a Java virtualmachine or equivalent, or files containing higher level code that may beexecuted by the computer using an interpreter (for example, scriptswritten in Python, Perl, Ruby, Groovy, or any other scripting language).

In some embodiments, systems may be implemented on a standalonecomputing system. Referring now to FIG. 5 above, there is shown a blockdiagram depicting a typical exemplary architecture of one or moreembodiments or components thereof on a standalone computing system.Computing device 20 includes processors 21 that may run software thatcarry out one or more functions or applications of embodiments, such asfor example a client application 24. Processors 21 may carry outcomputing instructions under control of an operating system 22 such as,for example, a version of MICROSOFT WINDOWS™ operating system, APPLEmacOS™ or iOS™ operating systems, some variety of the Linux operatingsystem, ANDROID™ operating system, or the like. In many cases, one ormore shared services 23 may be operable in system 20, and may be usefulfor providing common services to client applications 24. Services 23 mayfor example be WINDOWS™ services, user-space common services in a Linuxenvironment, or any other type of common service architecture used withoperating system 21. Input devices 28 may be of any type suitable forreceiving user input, including for example a keyboard, touchscreen,microphone (for example, for voice input), mouse, touchpad, trackball,or any combination thereof. Output devices 27 may be of any typesuitable for providing output to one or more users, whether remote orlocal to system 20, and may include for example one or more screens forvisual output, speakers, printers, or any combination thereof. Memory 25may be random-access memory having any structure and architecture knownin the art, for use by processors 21, for example to run software.Storage devices 26 may be any magnetic, optical, mechanical, memristor,or electrical storage device for storage of data in digital form (suchas those described above, referring to FIG. 5). Examples of storagedevices 26 include flash memory, magnetic hard drive, CD-ROM, and/or thelike.

The system 20 may be and/or comprise the channel selector 126.

In some embodiments, systems may be implemented on a distributedcomputing network, such as one having any number of clients and/orservers. Referring now to FIG. 6, there is shown a block diagramdepicting an exemplary architecture 30 for implementing at least aportion of a system according to one aspect on a distributed computingnetwork. According to the aspect, any number of clients 33 may beprovided. Each client 33 may run software for implementing client-sideportions of a system; clients may comprise a system 20 such as thatillustrated in FIG. 5. In addition, any number of servers 32 may beprovided for handling requests received from one or more clients 33.Clients 33 and servers 32 may communicate with one another via one ormore electronic networks 31, which may be in various embodiments any ofthe Internet, a wide area network, a mobile telephony network (such asCDMA or GSM cellular networks), a wireless network (such as WiFi, WiMAX,LTE, and so forth), or a local area network (or indeed any networktopology known in the art; the aspect does not prefer any one networktopology over any other). Networks 31 may be implemented using any knownnetwork protocols, including for example wired and/or wirelessprotocols.

In addition, in some embodiments, servers 32 may call external services37 when needed to obtain additional information, or to refer toadditional data concerning a particular call. Communications withexternal services 37 may take place, for example, via one or morenetworks 31. In various embodiments, external services 37 may compriseweb-enabled services or functionality related to or installed on thehardware device itself. For example, in one aspect where clientapplications 24 are implemented on a smartphone or other electronicdevice, client applications 24 may obtain information stored in a serversystem 32 in the cloud or on an external service 37 deployed on one ormore of a particular enterprise's or user's premises.

In some embodiments, clients 33 or servers 32 (or both) may make use ofone or more specialized services or appliances that may be deployedlocally or remotely across one or more networks 31. For example, one ormore databases 34 may be used or referred to by one or more embodiments.It should be understood by one having ordinary skill in the art thatdatabases 34 may be arranged in a wide variety of architectures andusing a wide variety of data access and manipulation means. For example,in various embodiments one or more databases 34 may comprise arelational database system using a structured query language (SQL),while others may comprise an alternative data storage technology such asthose referred to in the art as “NoSQL” (for example, HADOOP CASSANDRA™,GOOGLE BIGTABLE™, and so forth). In some embodiments, variant databasearchitectures such as column-oriented databases, in-memory databases,clustered databases, distributed databases, or even flat file datarepositories may be used according to the aspect. It will be appreciatedby one having ordinary skill in the art that any combination of known orfuture database technologies may be used as appropriate, unless aspecific database technology or a specific arrangement of components isspecified for a particular aspect described herein. Moreover, it shouldbe appreciated that the term “database” as used herein may refer to aphysical database machine, a cluster of machines acting as a singledatabase system, or a logical database within an overall databasemanagement system. Unless a specific meaning is specified for a givenuse of the term “database”, it should be construed to mean any of thesesenses of the word, all of which are understood as a plain meaning ofthe term “database” by those having ordinary skill in the art.

Similarly, some embodiments may make use of one or more security systems36 and configuration systems 35. Security and configuration managementare common information technology (IT) and web functions, and someamount of each are generally associated with any IT or web systems. Itshould be understood by one having ordinary skill in the art that anyconfiguration or security subsystems known in the art now or in thefuture may be used in conjunction with embodiments without limitation,unless a specific security 36 or configuration system 35 or approach isspecifically required by the description of any specific aspect.

The one or more of the server(s) 32 may be and/or comprise the channelselector 126.

FIG. 7 shows an exemplary overview of a computer system 40 as may beused in any of the various locations throughout the system. It isexemplary of any computer that may execute code to process data. Variousmodifications and changes may be made to computer system 40 withoutdeparting from the broader scope of the system and method disclosedherein. Central processor unit (CPU) 41 is connected to bus 42, to whichbus is also connected memory 43, nonvolatile memory 44, display 47,input/output (I/O) unit 48, and network interface card (NIC) 53. I/Ounit 48 may, typically, be connected to keyboard 49, pointing device 50,hard disk 52, and real-time clock 51. NIC 53 connects to network 54,which may be the Internet or a local network, which local network may ormay not have connections to the Internet. Also shown as part of system40 is power supply unit 45 connected, in this example, to a mainalternating current (AC) supply 46. Not shown are batteries that couldbe present, and many other devices and modifications that are well knownbut are not applicable to the specific novel functions of the currentsystem and method disclosed herein. It should be appreciated that someor all components illustrated may be combined, such as in variousintegrated applications, for example Qualcomm or Samsungsystem-on-a-chip (SOC) devices, or whenever it may be appropriate tocombine multiple capabilities or functions into a single hardware device(for instance, in mobile devices such as smartphones, video gameconsoles, in-vehicle computer systems such as navigation or multimediasystems in automobiles, or other integrated hardware devices).

The computer system 40 may be and/or comprise the channel selector 126.

In various embodiments, functionality for implementing systems ormethods of various embodiments may be distributed among any number ofclient and/or server components. For example, various software modulesmay be implemented for performing various functions in connection withthe system of any particular aspect, and such modules may be variouslyimplemented to run on server and/or client components.

The skilled person will be aware of a range of possible modifications ofthe various embodiments described above. Accordingly, the presentinvention is defined by the claims and their equivalents.

As used herein any reference to “one embodiment” or “an embodiment”means that a particular element, feature, structure, or characteristicdescribed in connection with the embodiment is included in at least oneembodiment. The appearances of the phrase “in one embodiment” in variousplaces in the specification are not necessarily all referring to thesame embodiment.

Some embodiments may be described using the expression “coupled” and“connected” along with their derivatives. For example, some embodimentsmay be described using the term “coupled” to indicate that two or moreelements are in direct physical or electrical contact. The term“coupled,” however, may also mean that two or more elements are not indirect contact with each other, but yet still co-operate or interactwith each other. The embodiments are not limited in this context.

As used herein, the terms “comprises,” “comprising,” “includes,”“including,” “has,” “having” or any other variation thereof, areintended to cover a non-exclusive inclusion. For example, a process,method, article, or apparatus that comprises a list of elements is notnecessarily limited to only those elements but may include otherelements not expressly listed or inherent to such process, method,article, or apparatus. Further, unless expressly stated to the contrary,“or” refers to an inclusive or and not to an exclusive or. For example,a condition A or B is satisfied by any one of the following: A is true(or present) and Bis false (or not present), A is false (or not present)and B is true (or present), and both A and B are true (or present).

In addition, use of the “a” or “an” are employed to describe elementsand components of the embodiments herein. This is done merely forconvenience and to give a general sense of the invention. Thisdescription should be read to include one or at least one and thesingular also includes the plural unless it is obvious that it is meantotherwise.

Upon reading this disclosure, those of skill in the art will appreciatestill additional alternative structural and functional designs for asystem and a process for creating an interactive message through thedisclosed principles herein. Thus, while particular embodiments andapplications have been illustrated and described, it is to be understoodthat the disclosed embodiments are not limited to the preciseconstruction and components disclosed herein. Various apparentmodifications, changes and variations may be made in the arrangement,operation and details of the method and apparatus disclosed hereinwithout departing from the spirit and scope defined in the appendedclaims.

What is claimed is:
 1. A method, performed in a server computing device,of transmitting data, the method comprising: receiving data, in a memoryof the server computing device, from an asset tracker device;determining, in a processor of the server computing device, one or moreweighting factors representing a respective priority associated with oneor more of a latency, a cost, a power utilization and a throughputassociated with transmission of the data for each of a plurality ofcommunication channels; and selecting, from the plurality ofcommunication channels, a communication channel for transmission of thedata based at least in part on the one or more weighting factors and atransmission schedule for the data.
 2. The method of claim 1 furthercomprising: switching on the selected communication channel; andtransmitting the data, in accordance with the selected communicationchannel, to at least one of: the asset tracker, an intermediarycomputing device associated with the asset tracker, and a communicationsatellite.
 3. The method of claim 2 wherein switching on the selectedcommunication channel comprises transitioning a software-defined radio(SDR) associated with the selected communication channel from a firstconfiguration into a second configuration.
 4. The method of claim 3further comprising, prior to transmitting the data, performing anin-phase and quadrature phase (IQ) modulation operation based at leastin part upon IQ modulation digital to analog converters.
 5. The methodof claim 1 wherein the data transmission schedule is based at least inpart on one or more of latency and data throughput information of eachof the plurality of communication channels.
 6. The method of claim 1wherein the weighting factor associated with the latency is based atleast in part upon a transmission distance associated with a locationalong an expected path of the asset tracker and an expected time ofdelivery of the data transmission.
 7. The method of claim 1 wherein theweighting factor associated with the power utilization is based at leastin part upon power consumption of respective ones of the plurality ofcommunication channels, the power consumption being derived based on oneor more of: a measurement, a computation, and a simulation.
 8. Themethod of claim 7 wherein the power utilization of at least one of theplurality of communication channels comprises power required totransition a software-defined radio (SDR) from a first configurationinto a second configuration.
 9. The method of claim 1 furthercomprising: prior to transmitting the data, queuing the data; andtransmitting the data upon toggling from the selected channel to ahigher-cost communication channel when a queue length results in apredetermined unacceptable latency cost associated with the queuing. 10.The method of claim 1 wherein the selected communication channel enablestransmission of the data between the asset tracker and the servercomputing device via at least one of: a cellular communication provider,a satellite communication provider and a wireless communicationprovider.
 11. A server computing device comprising: a processor; and amemory including instructions, the instructions when executed in theprocessor causing operations comprising: receiving data, in a memory ofthe server computing device, from an asset tracker device; determining,in a processor of the server computing device, one or more weightingfactors representing a respective priority associated with one or moreof a latency, a cost, a power utilization and a throughput associatedwith transmission of the data for each of a plurality of communicationchannels; and selecting, from the plurality of communication channels, acommunication channel for transmission of the data based at least inpart on the one or more weighting factors and a transmission schedulefor the data.
 12. The server computing device of claim 11 furthercomprising instructions executable to cause: switching on the selectedcommunication channel; and transmitting the data, in accordance with theselected communication channel, to at least one of: the asset tracker,an intermediary computing device associated with the asset tracker, anda communication satellite.
 13. The server computing device of claim 12wherein switching on the selected communication channel comprisestransitioning a software-defined radio (SDR) associated with theselected communication channel from a first configuration into a secondconfiguration.
 14. The server computing device of claim 13 furthercomprising instructions executable to cause: prior to transmitting thedata, performing an in-phase and quadrature phase (IQ) modulationoperation based at least in part on IQ modulation digital to analogconverters.
 15. The server computing device of claim 11 wherein the datatransmission schedule is based at least in part on one or more oflatency and data throughput information of each of the plurality ofcommunication channels.
 16. The server computing device of claim 11wherein the weighting factor associated with the latency is based atleast in part upon a transmission distance associated with a locationalong an expected path of the asset tracker and an expected time ofdelivery of the data transmission.
 17. The server computing device ofclaim 11 wherein the weighting factor associated with the powerutilization is based at least in part upon power consumption ofrespective ones of the plurality of communication channels, the powerconsumption being derived based on one or more of: a measurement, acomputation, and a simulation.
 18. The server computing device of claim17 wherein the power utilization of at least one of the plurality ofcommunication channels comprises power required to transition asoftware-defined radio (SDR) from a first configuration into a secondconfiguration.
 19. The server computing device of claim 11 furthercomprising instructions executable to cause: prior to transmitting thedata, queuing the data; and transmitting the data upon toggling from theselected channel to a higher-cost communication channel when a queuelength results in a predetermined unacceptable latency cost associatedwith the queuing.
 20. The server computing device of claim 11 whereinthe selected communication channel enables transmission of the databetween the asset tracker and the server computing device via at leastone of: a cellular communication provider, a satellite communicationprovider and a wireless communication provider.